package com.hospital.dao;

import com.hospital.model.WardStatusView;
import java.sql.SQLException;
import java.util.List;

/**
 * 病房状态数据访问接口
 * 定义了对病房状态信息进行数据库操作的方法
 */
public interface WardStatusDao {
    /**
     * 获取所有病房状态信息
     * @return 病房状态信息列表
     * @throws SQLException 数据库操作异常
     */
    List<WardStatusView> findAll() throws SQLException;
    
    /**
     * 根据科室ID查询病房状态
     * @param deptId 科室ID
     * @return 该科室的病房状态信息列表
     * @throws SQLException 数据库操作异常
     */
    List<WardStatusView> findByDeptId(int deptId) throws SQLException;
    
    /**
     * 根据科室ID和楼层查询病房状态
     * @param deptId 科室ID
     * @param floorNum 楼层号
     * @return 符合条件的病房状态信息列表
     * @throws SQLException 数据库操作异常
     */
    List<WardStatusView> findByDeptIdAndFloor(int deptId, int floorNum) throws SQLException;
    
    /**
     * 获取指定科室的所有楼层号
     * @param deptId 科室ID
     * @return 楼层号列表
     * @throws SQLException 数据库操作异常
     */
    List<Integer> findFloorsByDeptId(int deptId) throws SQLException;
    
    /**
     * 获取指定楼层的所有病房信息
     * @param floorNum 楼层号
     * @return 病房状态信息列表
     * @throws SQLException 数据库操作异常
     */
    List<WardStatusView> findWardsByFloor(int floorNum) throws SQLException;
    
    /**
     * 根据楼层号查询病房状态
     * @param floorNum 楼层号
     * @return 病房状态信息列表
     * @throws SQLException 数据库操作异常
     */
    List<WardStatusView> findByFloor(int floorNum) throws SQLException;
    
    /**
     * 获取指定病房的床位状态信息
     * @param floorNum 楼层号
     * @param wardNum 病房号
     * @return 床位状态信息列表
     * @throws SQLException 数据库操作异常
     */
    List<WardStatusView> findByWard(int floorNum, String wardNum) throws SQLException;
    
    /**
     * 获取所有空闲床位信息
     * @return 空闲床位状态信息列表
     * @throws SQLException 数据库操作异常
     */
    List<WardStatusView> findAvailableBeds() throws SQLException;
} 